In the operation of computer memory it has been found that overall speed of operation of the computer can be enhanced if the read and write memory operations are carried out in data blocks. Depending on the size of the computer, the data blocks may be of any size, for example, 32 or 64 bits. The actual data unit or operand size used by the computer is smaller than the data block. The data block is typically an integral multiple of the data unit size. For example, a computer which uses byte operands may have a memory block size of 64 bits, which is 8 bytes.
Although most of a computer's operation are more efficiently carried out when large blocks are transferred to and from the memory, certain operations are slow and cumbersome. In particular the operation of writing a small number of data units, less than one block, to the main memory of the computer. If only a full block can be written into the main memory, it is necessary for the software of the system to first determine the address for the block that is going to receive the new, small number of data units. This block is then read from the memory and transferred to the central processor of the computer. By means of executing a series of instructions the new data units are merged with the previously read data units to produce a new block in which a part of the data units are new and the remainder of the data units are old. This entire block is then transferred back to the main memory for a block write operation. This procedure requires that the software carry out numerous steps and is much slower than the conventional operation of writing an entire block into the main memory.
In a computer system which utilizes peripheral devices that are byte oriented and have a multibyte memory block size, there can be a considerable loss of processing time when the software operations must be diverted to perform less than full block write operations. Therefore, there exists a need for circuitry which can respond to a request for less than block write and proceed to write the selected data units into the main memory without requiring intervention of the system software.